package cn.tedu.serializable;
/**本类用于测试序列化与反序列化*/

import java.io.*;

/**
 * 序列化：是指把程序中的Java对象，永久保存到磁盘中，相当于写出的过程
 * 对应流的方向：out，对应的序列化流为：ObjectOutputStream
 * 反序列化：是指把之前已经序列化在文件中保存的数据，读取/恢复到程序
 * 对应流的方向：in，对应的反序列化流：ObjectInputStream*/
public class TestSerializable {
    public static void main(String[] args) {
//        method();//测试序列化
        method2();//测试反序列化
    }

    private static void method() {
        ObjectOutputStream out=null;
        try {
            out=new ObjectOutputStream(
                    new FileOutputStream("G:\\ready\\1.txt"));
            Student s=new Student("张大彪",25,"一营",'男');
            out.writeObject(s);
            System.out.println("恭喜您，打印成功！");
        } catch (IOException e) {
            System.out.println("很抱歉，打印失败！");
            e.printStackTrace();
        }finally {
            try {
                out.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    private static void method2() {
        ObjectInputStream in=null;
        try {
            in=new ObjectInputStream(new FileInputStream("G:\\ready\\1.txt"));
            Object o = in.readObject();
            System.out.println(o);
            System.out.println("恭喜您！反序列化成功！");
        } catch (Exception e) {
            System.out.println("很遗憾！反序列化失败！");
            e.printStackTrace();
        }finally {
            try {
                in.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}
